package com.zbkj.crmeb.chant.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.common.CommonPage;
import com.common.PageParamRequest;
import com.zbkj.crmeb.chant.model.ChannelDiscountPackage;
import com.zbkj.crmeb.chant.request.ChannelDiscountPackageRequest;
import com.zbkj.crmeb.chant.response.ChannelDiscountPackageResponse;
import com.zbkj.crmeb.store.response.StoreCartResponse;

import java.math.BigDecimal;
import java.util.List;

public interface ChannelDiscountPackageService extends IService<ChannelDiscountPackage> {

    /**
     * 功能描述: 保存优惠套餐
     * @Param: [request, merId]
     * @Return: java.lang.Boolean
     * @Author: wangzh
     * @Date: 2023/6/2 14:39
     */
    Boolean saveOrUpdateInfo(ChannelDiscountPackageRequest request, Integer merId);

    /**
     * 功能描述: 提前结束
     * @Param: [id]
     * @Return: java.lang.Boolean
     * @Author: wangzh
     * @Date: 2023/6/5 11:14
     */
    Boolean earlyTerminationActivity(Integer id);

    /**
     * 功能描述: 删除优惠套餐
     * @Param: [id]
     * @Return: java.lang.Boolean
     * @Author: wangzh
     * @Date: 2023/6/5 11:14
     */
    Boolean delDiscountPackage(Integer id);

    /**
     * 功能描述: 获取优惠套餐列表
     * @Param: [activityName, activityType, status, merId, request]
     * @Return: com.common.CommonPage<com.zbkj.crmeb.chant.response.ChannelDiscountPackageResponse>
     * @Author: wangzh
     * @Date: 2023/6/5 13:44
     */
    CommonPage<ChannelDiscountPackageResponse> getList(String activityName, Integer activityType, Integer status, Integer merId, PageParamRequest request);

    /**
     * 功能描述: 获取套餐详情
     * @Param: [id]
     * @Return: com.zbkj.crmeb.chant.response.ChannelDiscountPackageResponse
     * @Author: wangzh
     * @Date: 2023/6/5 14:46
     */
    ChannelDiscountPackageResponse getInfo(Integer id);

    /**
     * 功能描述: 获取优惠套餐信息
     * @Param: [activityIds, merId]
     * @Return: java.util.List<com.zbkj.crmeb.chant.model.ChannelDiscountPackage>
     * @Author: wangzh
     * @Date: 2023/6/6 10:26
     */
    List<ChannelDiscountPackage> getListInIds(List<Integer> activityIds, Integer merId);

    /**
     * 功能描述: 获取支付价格
     * @Param: [activityId, storeCartResponses]
     * @Return: java.math.BigDecimal
     * @Author: wangzh
     * @Date: 2023/6/6 14:25
     */
    BigDecimal getPayPrice(Integer activityId, List<StoreCartResponse> storeCartResponses);
}
